package com.wyx.suanfa;

/**
 * @author 王艺锡
 * @version 1.0
 */
public class subsetsWithDup {
    //给你一个整数数组 nums ，其中可能包含重复元素，请你返回该数组所有可能的
    //子集
    //（幂集）。
    //
    //解集 不能 包含重复的子集。返回的解集中，子集可以按 任意顺序 排列
    public static void main(String[] args) {

    }
}
/*
* class Solution {
    List<List<Integer>> result = new ArrayList<>();
    LinkedList<Integer> path = new LinkedList<>();
    boolean[] used;
    public List<List<Integer>> subsetsWithDup(int[] nums) {
        if(nums.length == 0){
            result.add(path);
            return result;
        }

        Arrays.sort(nums);
        used = new boolean[nums.length];
        subsetsWithDupHelper(nums,0);
        return result;
    }

    void subsetsWithDupHelper(int[] nums,int startIndex){
        result.add(new ArrayList<>(path));

        for(int i = startIndex;i< nums.length;i++){
            if(i > 0 && nums[i] == nums[i - 1] && used[i - 1] == false){
                continue;
            }

            used[i] = true;
            path.add(nums[i]);
            subsetsWithDupHelper(nums,i + 1);
            path.removeLast();
            used[i] = false;
        }

    }
}*/
